﻿
namespace Cesave.Domain.Core.Specification
{
    /// <summary>
    /// Clase base para especificaciones compuestas.
    /// </summary>
    /// <typeparam name="TEntity">Tipo de la entidad que checa ésta especificación.</typeparam>
    public abstract class CompositeSpecification<TEntity>
         : Specification<TEntity>
         where TEntity : class,new()
    {
        #region Properties

        /// <summary>
        /// Especificación del lado izquierdo para éste elemento compuesto.
        /// </summary>
        public abstract ISpecification<TEntity> LeftSideSpecification
        {
            get;
        }

        /// <summary>
        /// Especificación del lado derecho para éste elemento compuesto.
        /// </summary>
        public abstract ISpecification<TEntity> RightSideSpecification
        {
            get;
        }

        #endregion
    }
}
